﻿using InterviewAppPhone.QuizPhoneService;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;

namespace InterviewAppPhone.Managers
{
    public class MProposta
    {
        public event EventHandler EsitoInvioDomanda_Event;

        public async void ProponiDomanda(long idtipologia, string testoDomanda, string rispostaCorretta, string rispostasbagliata1, string rispostasbagliata2, string rispostasbagliata3)
        {
            var client = new QuizServiceClient();

            var domanda = new DomandaService()
            {
                IdTipologiaTest = idtipologia,
                Domanda = testoDomanda,
                PossibiliRisposte = new ObservableCollection<PossibiliRisposteService>()
            };

            domanda.PossibiliRisposte.Add(new PossibiliRisposteService()
            {
                DescrizioneRisposta = rispostaCorretta,
                IsCorretta = true
            });
            domanda.PossibiliRisposte.Add(new PossibiliRisposteService()
            {
                DescrizioneRisposta = rispostasbagliata1,
                IsCorretta = false
            });
            domanda.PossibiliRisposte.Add(new PossibiliRisposteService()
            {
                DescrizioneRisposta = rispostasbagliata2,
                IsCorretta = false
            });
            domanda.PossibiliRisposte.Add(new PossibiliRisposteService()
            {
                DescrizioneRisposta = rispostasbagliata3,
                IsCorretta = false
            });

            var request = new InsertNuovaDomandaRequest()
            {
                Domanda = domanda,

            };

            client.InsertNuovaDomandaCompleted += client_InsertNuovaDomandaCompleted;
            client.InsertNuovaDomandaAsync(request);
            await Task.FromResult(true);
        }

        private void client_InsertNuovaDomandaCompleted(object sender, InsertNuovaDomandaCompletedEventArgs e)
        {
            bool esito;
            try
            {
                if (e.Error != null)
                    throw new Exception(e.Error.Message);
                esito = true;
            }
            catch (Exception)
            {
                esito = false;
            }
            EsitoInvioDomanda_Event(esito, null);
        }
    }
}
